import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios';

// 创建axios实例
const service: AxiosInstance = axios.create({
    baseURL: 'http://localhost:8080/dakota/api', // 基础URL
    timeout: 5000, // 请求超时时间
});

// 请求拦截器
service.interceptors.request.use(
    (config: InternalAxiosRequestConfig) => {
        // 在请求发送之前进行处理，添加token      
        const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}');
        const token = userInfo.userInfo.token;
        if (token) {
            config.headers['Authorization'] = `${token}`;
        }
        return config;
    },
    (error: any) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

service.interceptors.response.use(
    response => {
      // 处理成功的响应
      // 不对响应数据做任何处理，直接返回
      return response; // 返回处理后的数据
    },
    error => {
      // 处理错误响应
      console.error('响应错误:', error);
      // 可以根据错误状态码进行不同处理
      if (error.response) {
        switch (error.response.status) {
          case 401:
            // 未授权，可能需要重新登录
            console.error('未授权，可能需要重新登录');
            break;
          case 403:
            // 禁止访问
            console.error('禁止访问');
            break;
          case 404:
            // 找不到资源
            console.error('找不到资源');
            break;
          default:
            // 其他错误，进行统一处理
            console.error('其他错误，请联系管理员处理:', error.response.data);
            break;
        }
      } else {
        // 网络错误或其他情况
        console.error('网络错误或其他情况:', error.message);
      }
      return Promise.reject(error); // 将错误返回，以便后续处理
    }
  );
  
export default service;